$(document).ready(function () {
    SetupCity.setAddress("#province", "#city", "#area");
    InputCheck.checkInputValueIsNumber("#verify_phone");

    bindEvent();
    setupCommunity();
});


/* 绑定所有事件 */
function bindEvent() {
    registerInput();
    bindSendVerification();
    bindRegister();
    bindSelectProperty();
}



/* 绑定所有的输入框事件 */
function registerInput() {
    checkUsername();
    checkPassword();
    checkRePassword();
    checkComponyName();
    checkCompanyAddress();
    checkContactsName();
    checkTelephone();
    checkMobilePhone();
    checkEmail();
}

/* 获取社区信息，并设置到界面上 */
function setupCommunity() {
    Api.fetchCommunityList(function (result) {
        window.localStorage.communityList = JSON.stringify(result.data);
        SetCommunity.setupCommunity("#community_address", result);
    }, function (error) {
        alert("获取社区列表失败!!!");
    })
}


/* 转到另一个界面 */
function gotoOtherInterface(interface) {
    window.localStorage.removeItem('communityList');
    window.location.href = interface;
}

/* 绑定物业公司的两个单选框事件 */
function bindSelectProperty() {
    $(".property_check").change(function () {
        var isChecked = $(this).prop('checked');
        $(".property_check").prop('checked', false);
        $(this).prop('checked', isChecked);

    });
}

/* 短信验证码倒计时 */
function sendVerification(element) {

    var wait = 60;
    forbidSendVerification(element);
    function forbidSendVerification(element) {
        if (wait == 0) {
            element.removeAttribute("disabled");
            element.value = "获取验证码";
            wait = 60;
        } else {
            element.setAttribute("disabled", true);
            element.value = "重新发送(" + wait + ")";
            wait--;
            setTimeout(function () {
                forbidSendVerification(element)
            }, 1000)
        }
    }
}


/* 绑定点击获取验证码 */
function bindSendVerification() {
    $("#sms").click(function () {
        if (InputCheck.checkInputValueIsPhone("#verify_phone")) {
            Api.fetchVerificationCode($("#verify_phone").val(), function (result) {
                sendVerification(document.getElementById('sms'));
            }, function (error) {
                alert("获取手机验证码失败");
            });
        } else {
            alert("输入手机格式不正确");
        }
    })
}

/* 显示输入框的提示 */
function showRemind(id_item) {
    $('#remind_' + id_item.id).removeClass("hide")
}

/* 隐藏输入框的提示 */
function hideRemind(id_item) {
    $('#remind_' + id_item.id).addClass('hide')
}

/* 用户名格式是否正确 */
function checkUserNameEffective() {
    var value = $('#user_name').val()
    if ((value.length < 4 && value.length > 20) || value.indexOf("!") > -1 || value == "") {
        alert("请确认用户名格式是否正确")
        return false;
    }
    else {
        return true
    }
}

/* 密码格式是否正确 */
function checkPasswordEffective() {
    var value = $('#password').val()
    var re_value = $('#re_password').val()
    if ((value.length < 6 && value.length > 20) || value == "") {
        alert("请确认密码格式是否正确")
        return false;
    }
    else if (value !== re_value) {
        alert("两次输入密码不匹配")
        return false;
    }
    else {
        return true
    }
}

/* 公司名称格式是否正确 */
function checkCompanyNameEffective() {
    var value = $('#company_name').val()
    if ((value.length < 4 && value.length > 40) || value.indexOf("!") > -1 || value == "") {
        alert("请确认公司名称格式是否正确")
        return false;
    }
    else {
        return true
    }
}

/* 公司地址格式是否正确 */
function checkCompanyAddressEffective() {
    var value = $('#company_address').val()
    if (value == "") {
        alert("请确认公司地址格式是否正确")
        return false;
    }
    else {
        return true
    }
}

/* 联系人格式是否正确 */
function checkContactsNameEffective() {
    var value = $('#contacts_name').val()
    if (value == "" || (value.length < 2 && value.length > 20)) {
        alert("请确认联系人姓名格式是否正确")
        return false;
    }
    else {
        return true
    }
}

/* 手机格式是否正确 */
function checkVerifyPhoneEffective() {
    var value = $('#verify_phone').val()
    var reg = /^1[3|4|5|7|8][0-9]{9}$/;
    var flag = reg.test(value); //true
    if (!flag) {
        alert("请确认手机格式是否正确")
        return false;
    }
    else {
        return true
    }
}

/* 短信验证码是否为空 */
function checkVerificationcodeEffective() {
    var value = $('#sms_code').val()
    if (value == "") {
        alert("请确认短信验证码格式是否正确")
        return false;
    }
    else {
        return true
    }
}

/* 是否已经同意企业服务条款 */
function checkIsAgreeBuLuoItem() {
    var value = $(".terms");
    if (!value.prop('checked')) {
        alert("未阅读并接受部落公企业服务条款");
        return false;
    }
    else {
        return true
    }
}


/* 检查输入是否完整且正确 */
function checkUserInfoEffective() {


    var judgment = [
        checkUserNameEffective, checkPasswordEffective , checkCompanyNameEffective,
        checkCompanyAddressEffective,checkContactsNameEffective,checkVerifyPhoneEffective,
         checkVerificationcodeEffective, checkIsAgreeBuLuoItem
        // verification_code,
    ];

    for(var i = 0 ; i < judgment.length; i++) {
        var judgfunc = judgment[i];
        if (!judgfunc()) {
            return false;
        }
    }
    return true;
}

/* 是否是物业公司，是则为对象添加新属性propertyNature
 * userInfo  注册的用户信息
  * */

function checkIsProperty(userInfo) {
    if (!$(".property_yes").prop("checked") && !$(".property_no").prop("checked")) {
        return userInfo;
    } else {
        userInfo['propertyNature'] = getIsProperty();
        return userInfo;
    }
}

/* 点击注册按钮 */
function bindRegister() {
    $(".register_button").click(function () {
        var verification = checkUserInfoEffective();
        if (verification) {
            var userInfo = getUserInputInformation();
            userInfo = checkIsProperty(userInfo);
            sendRegisterService(userInfo);
        }
    })
}

/* 调用注册接口 */
function sendRegisterService(userInfo) {
       Api.registerCompanies(userInfo, function (result) {
           if (result.code == 201) {
               alert("注册成功");
               gotoOtherInterface("../html/login.html");
               // window.location.href = "../html/login.html";
           } else if (result.code == 401){
               alert('手机验证码不匹配');
           } else {
               alert('注册失败');
           }
       }, function (error) {
           alert("注册失败" + error);
       });
}


/* 判断是否为物业公司 */
function getIsProperty() {
    return $(".property_yes").prop('checked');

}

/* 获取所有注册信息 */
function getUserInputInformation() {
    var communityList = JSON.parse(window.localStorage.communityList);
    var selectIndex = document.getElementById("community_address").selectedIndex;
    var communityId = communityList[selectIndex].id;


    return {
        name: $("#user_name").val(),
        password: $("#password").val(),
        companyName: $("#company_name").val(),
        province: $("#province").val(),
        city: $("#city").val(),
        district: $("#area").val(),
        address: $("#company_address").val(),
        companyStaffNum: $("#people_count").val(),
        companyIndustry: $("#company_kind").val(),
        companyNature: $("#company_nature").val(),
        linkman: $("#contacts_name").val(),
        department: $("#department").val(),
        phone: $("#fixed_telephone").val(),
        mobilePhone: $("#verify_phone").val(),
        verificationCode: $("#sms_code").val(),
        email:$("#contact_email").val(),
        communityName: $("#community_address").val(),
        communityId: communityId
    }
}

/* 用户名是否符合要求 */
function checkUsername() {
    $("#user_name").blur(function () {
        handleRemind("#remind_user_name", InputRule.username($("#user_name")),
                                    Prompt.usernameError, Prompt.username);
    });

}

/* 密码是否符合要求 */
function checkPassword() {
    $("#password").blur(function () {

        handleRemind("#remind_password", InputRule.password($("#password")),
                                    Prompt.passwordError, Prompt.password);
        checkPasswordDifference(function () {
            changeErrorToPrompt("#remind_re_password", Prompt.rePassword);
        }, function () {} );

    });
}

/* 确认密码是否符合要求 */
function checkRePassword() {
    $("#re_password").blur(function () {

        checkPasswordDifference(function () {
            changeErrorToPrompt("#remind_re_password", Prompt.rePassword);
        }, function () {
            changePromptToError("#remind_re_password", Prompt.passwordDifference);
        })
    });
}

/* 两次密码输入是否相同
* fuc 密码相同执行的事件
* notFuc 密码不同执行的事件
* */
function checkPasswordDifference(fuc, notFuc) {
    if (InputRule.passwordDeference($("#password"), $("#re_password"))) {
        fuc();
    } else {
        notFuc();
    }
}


/* 公司名称是否符合要求 */
function checkComponyName() {
    $("#company_name").blur(function () {

          handleRemind("#remind_company_name", InputRule.companyName($("#company_name")),
                                    Prompt.companyNameError, Prompt.companyName);
    })
}

/* 公司地址是否符合要求 */
function checkCompanyAddress() {
    $("#company_address").blur(function () {


        handleRemind("#remind_company_address", InputRule.companyAddress($("#company_address")),
                                    Prompt.companyAddressError, Prompt.companyAddress);
    });
}

/* 固定电话是否符合要求 */
function checkTelephone() {
    $("#fixed_telephone").blur(function () {
        if (!InputRule.fixedTelephone($("#fixed_telephone"))) {
            changeErrorToPrompt("#remind_fixed_telephone", Prompt.fixedTelephone);
            $(".remind_fixed_telephone_text").removeClass("fixed_telephone");
        } else {
            changePromptToError("#remind_fixed_telephone", Prompt.fixedTelephoneError);
            $(".remind_fixed_telephone_text").addClass("fixed_telephone")
        }
    })
}


/* 联系人姓名是否符合要求 */
function checkContactsName() {
    $("#contacts_name").blur(function () {

        handleRemind("#remind_contacts_name", InputRule.contactsName($("#contacts_name")),
                                    Prompt.contactsNameError, Prompt.contactsName);
    })
}

/* 手机号是否符合要求 */
function checkMobilePhone() {
    $("#verify_phone").blur(function () {


        handleRemind("#remind_verify_phone", InputRule.mobileTelephone($("#verify_phone")),
                                    Prompt.mobilePhoneError, Prompt.mobilePhone);
    })
}

/* 邮箱是否符合要求 */
function checkEmail() {
    $("#contact_email").blur(function () {

        handleRemind("#remind_contact_email", InputRule.email($("#contact_email")),
                                    Prompt.emailError, Prompt.email);
    })
}




/* 对提示框进行操作
* remindElement 提示框
* inputRule 判断正确条件
* errorText 错误提示
* remindText 常规提示
* */
function handleRemind(remindElement, inputRule, errorText, remindText) {
    if (inputRule) {
        changePromptToError(remindElement, errorText);
        $(".register_button").attr('disabled', 'disabled');
        return true;
    } else {
        changeErrorToPrompt(remindElement, remindText);
        $(".register_button").attr('disabled', null);
        return false;
    }
}


/* 提示框从常规样式变为错误样式
* element 提示框
* text 错误提示信息
* */
function changePromptToError(element, text) {
    $(element + " p").text(text);
    $(element).addClass("propmt_error");
    $(element + " p").addClass("prompt_error_text");
    $(element).removeClass("hide");
}

/* 提示框从错误样式变为常规样式
* element 提示框
* text 常规提示信息
* */
function changeErrorToPrompt(element, text) {
    $(element + " p").text(text);
    $(element).removeClass("propmt_error");
    $(element + " p").removeClass("prompt_error_text");
    $(element).addClass("hide");
}

